package com.luckcoder.relax.games.domain.bo;

import com.luckcoder.relax.games.domain.RelaxAudioConfig;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;

/**
 * 音效配置业务对象 relax_audio_config
 *
 * @author zhanghao
 * @date 2025-09-11
 */
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = RelaxAudioConfig.class, reverseConvertGenerate = false)
public class RelaxAudioConfigBo extends BaseEntity {

    /**
     * 音效ID
     */
    @NotNull(message = "音效ID不能为空", groups = { EditGroup.class })
    private Long audioId;

    /**
     * 游戏编码
     */
    @NotBlank(message = "游戏编码不能为空", groups = { AddGroup.class, EditGroup.class })
    private String gameCode;

    /**
     * 音效名称
     */
    @NotBlank(message = "音效名称不能为空", groups = { AddGroup.class, EditGroup.class })
    private String audioName;

    /**
     * 音效类型（pop爆泡、eliminate消除、background背景、click点击、success成功）
     */
    private String audioType;

    /**
     * 音效URL（网络地址）
     */
    private String audioUrl;

    /**
     * 本地文件路径（备用）
     */
    private String localPath;

    /**
     * 音量（0.00-1.00）
     */
    private Long volume;

    /**
     * 时长（毫秒）
     */
    private Long duration;

    /**
     * 文件格式（wav、mp3、ogg、m4a）
     */
    private String fileFormat;

    /**
     * 失效时备用方案（generate生成音效、toast提示、silent静默）
     */
    private String fallbackType;

    /**
     * 权重（用于随机选择）
     */
    private Long weight;

    /**
     * 显示顺序
     */
    private Long sortOrder;

    /**
     * 状态（0正常 1停用）
     */
    private String status;

    /**
     * 是否启用（0禁用 1启用）
     */
    private String isEnabled;

    /**
     * 备注
     */
    private String remark;


}
